<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class TopNavController extends Controller
{
    /**
	*	顶部导航栏添加页面
	*	/admin/topNav/add
    */
    public function getAdd() {

    	// 查询所有的分类
    	$res = self::getCates();
    
    	// 加载模板
    	return view('topNav.add',['list' => $res]);

    }

    /**
	*	数据处理	
    */
    public static function getCates() {

    	// 查询数据
    	$res = DB::table('nav_top')
    		->select(DB::raw("*,concat(path,'-',id) as paths"))
    		->orderBy('paths')->get();
    
    	// 遍历		
    		foreach($res as &$v){
            
                // dd($v);
                $num=count(explode('-',$v['path']))-1;	
                $v['name']=str_repeat('|---',$num).$v['name'];

    		}
    
    	return $res;
    }

    /**
	*	顶部导航栏执行添加
	*	/admin/topNav/insert
    */
    public function postInsert(Request $request) {

    	// 判断父类下是否有子分类
    	if($request -> input('pid') == 0) {

    		// 添加顶级父类
    		$data['name'] = $request -> input('name');
    		$data['url'] = $request -> input('url');
    		$data['pid'] = 0;
    		$data['path'] ='0';

    	}else {

    		// 添加子类pid等于$request->input['pid']
    		$data['name'] = $request->input('name');
    		$data['url'] = $request->input('url');
    		$data['pid'] = $request->input('pid');

    		// 拼接子类的path
    		$res = DB::table('nav_top') -> where('id','=',$request->input('pid'))->first();
    	
    		$data['path'] = $res['path'].'-'.$res['id'];
    		
    	}
    	
        //使用laravel内置验证方式验证 表单选项
         $this->validate($request, [
                'name' => 'required',
                'url' => 'required',
                'pid' => 'required',

            ],[
                // 报错信息的设置  不写默认英文
                'name.required'=>'类别名称不能为空',
                'url.required'=>'url链接地址不能为空',
                'pid.required'=>'父类名称不能为空'
                  
            ]);
         
    	//执行添加
    		$res = DB::table('nav_top')->insert($data);

    		// 判断是否添加成功
    		if($res) {
    			return redirect('admin/topNav/index') -> with('success','添加成功');
    		}else {
    			return back() -> with('error','添加失败');
    		}
    }

    /**
	*	顶部导航栏浏览页面
	*	/admin/topNav/index
    */
    public function getIndex(Request $request) {

    	// 查询所有的数据,加载模板
    	return view('topNav.index',['list'=>self::getCates()]);

    }

    // 转化pid为父类名称
    public static function getTranslate($pid) {

    	// 查询数据
    	$res = DB::table('nav_top') -> select('name') -> where('id','=',$pid) -> first();

    	return isset($res['name']) ? $res['name'] : '顶级类';
    }

    /**
	*	顶部导航栏删除
	*	/admin/topNav/delete
    */
    public function getDelete($id) {

    	// 查询判断是否有子类，如果有则不删除
    	$res = DB::table('nav_top') -> where('pid','=',$id) -> count();
    	if($res > 0) {
    		return back()->with('error','该类有子类不能删除');
    	}else{

    		// 执行删除
    		$data = DB::table('nav_top') -> where('id','=',$id) -> delete();

    		// 判断是否删除成功
    		if($data) {
    			return redirect('admin/topNav/index') -> with('success','删除成功');
    		}else {
    			return back() -> with('error','删除失败');
    		}
    	}
    }

    /**
	*	顶部导航栏修改页面
	*	/admin/topNav/edit
    */
    public function getEdit($id) {
  
    	// 查询数据
    	$data = DB::table('nav_top') -> where('id','=',$id) -> first();
    	
    	// 加载模板
    	return view('topNav.edit',[
    			'vo' => $data,
    			'list' => self::getCates(),
    			'id' => $data['pid']
    		]);

    }

    /**
	*	顶部导航栏执行修改
	*	/admin/topNav/update
    */
	public function postUpdate(Request $request) {

         //使用laravel内置验证方式验证 表单选项
         $this->validate($request, [
                'name' => 'required',
                'url' => 'required'
              
            ],[
                // 报错信息的设置  不写默认英文
                'name.required'=>'类别名称不能为空',
                'url.required'=>'url链接地址不能为空',
                   
            ]);

		// 执行修改
		$data = $request -> only(['id','name','url']);

		$res = DB::table('nav_top') -> select('name') -> where('id','=',$request->input('id')) -> update($data);
		
		// 判断
		if($res) {
			return redirect('admin/topNav/index') -> with('success','修改成功');
		} else {
			return back() -> with('error','修改失败');
		}
	}

}
